package com.td.filemanager.ui.widget;

import com.td.filemanager.ResourceTable;
import com.td.filemanager.utils.AttrSetUtil;
import ohos.agp.components.*;
import ohos.agp.components.element.Element;
import ohos.agp.components.element.PixelMapElement;
import ohos.app.Context;

import java.util.Objects;

/**
 * ActionBar
 *
 * @since 2021/9/29
 */
public class ActionBar extends ComponentContainer {
    // 标题文本
    private static final String TITLE_CONTENT = "title";

    // 右侧按键文本
    private static final String RIGHT_CONTENT = "right_content";

    // 左侧图标
    private static final String LEFT_SRC = "left_src";
    private Image mLeftImage;
    private Text mTitle;

    /**
     * actionBar构造函数
     *
     * @param context 上下文
     */
    public ActionBar(Context context) {
        super(context);
        initActionBar(context, null);
    }

    /**
     * actionBar构造函数
     *
     * @param context 上下文
     * @param attrSet 资源组
     */
    public ActionBar(Context context, AttrSet attrSet) {
        super(context, attrSet);
        initActionBar(context, attrSet);
    }

    /**
     * actionBar构造函数
     *
     * @param context   上下文
     * @param attrSet   资源组
     * @param styleName 风格类型
     */
    public ActionBar(Context context, AttrSet attrSet, String styleName) {
        super(context, attrSet, styleName);
        initActionBar(context, attrSet);
    }

    private void initActionBar(Context context, AttrSet attrSet) {
        Component component = LayoutScatter.getInstance(context).parse(ResourceTable.Layout_action_bar, this, false);
        addComponent(component);

        mLeftImage = (Image) component.findComponentById(ResourceTable.Id_left_image);
        mTitle = (Text) component.findComponentById(ResourceTable.Id_title);

        if (attrSet != null) {
            String titleStr = AttrSetUtil.getStringValue(attrSet, TITLE_CONTENT, "");
            mTitle.setText(titleStr);

            Element element = AttrSetUtil.getElement(attrSet, LEFT_SRC, null);
            if (element instanceof PixelMapElement) {
                mLeftImage.setPixelMap(((PixelMapElement) element).getPixelMap());
            }
        }
    }

    /**
     * 标题设置
     *
     * @param titleResId 标题资源
     * @return ActionBar
     */
    public ActionBar setTitleText(int titleResId) {
        if (mTitle != null) {
            mTitle.setText(titleResId);
        }
        return this;
    }

    /**
     * 标题设置
     *
     * @param content 标题内容
     * @return ActionBar
     */
    public ActionBar setTitleText(String content) {
        if (mTitle != null) {
            mTitle.setText(content);
        }
        return this;
    }

    /**
     * 左侧返回图片监听内部类
     *
     * @since 2021/9/29
     */
    public interface LeftClickedListener {
        void onClick(Component component);
    }

    /**
     * 左侧图片点击监听
     *
     * @param listener 监听
     * @return ActionBar
     */
    public ActionBar setLeftClickListener(LeftClickedListener listener) {
        if (mLeftImage != null && Objects.nonNull(listener)) {
            mLeftImage.setClickedListener(listener::onClick);
        }
        return this;
    }

    /**
     * 右侧文本监听内部类
     *
     * @since 2021/9/29
     */
    public interface RightClickedListener {
        void onClick(Component component);
    }


}
